package dominio;
import java.util.ArrayList;
import java.util.List;

import exceptions.NivelNoExisteException;

public class Juego {
	List<Nivel> niveles;
	
	public Juego(ArrayList<Nivel> unN){
		this.niveles = unN;
	}
	
	public Nivel agregarUnNivel(String nombreNivel, int nroMaxDeMovimientos, int puntajeMinimo, Tablero t){
		Nivel nuevoNivel = new Nivel(nombreNivel, nroMaxDeMovimientos,puntajeMinimo,t);
		this.getNiveles().add(nuevoNivel);
		return nuevoNivel;
	}
	
	public Nivel editarNivel(Nivel viejo, int nuevoNroMaxDeMovimientos, int nuevoPuntajeMinimo, Dificultad d) throws NivelNoExisteException{
		if(this.getNiveles().contains(viejo)){
			viejo.setMaxNroMovimientosARealizar(nuevoNroMaxDeMovimientos);
			viejo.setPuntajeMinimo(nuevoPuntajeMinimo);
			viejo.dificultad = d;
		} else{
			throw new NivelNoExisteException();
		}
		return viejo;
	}
	
	public void removerNivel(Nivel n) throws NivelNoExisteException{
		if(this.getNiveles().contains(n)){
			this.getNiveles().remove(n);
		}else{
			throw new NivelNoExisteException();
		} 
	}
	
	public void agregarObjetivoGrandesExplosionesA(int puntaje, String color,Nivel n){
		GrandesExplosiones to = new GrandesExplosiones(puntaje,color);
		n.getObjetivos().put(to, false);
	}
	
	public void agregarObjetivoCantExplosionesPorColor(int puntaje,int cant ,Nivel n){
		CantExplosionesPorColor ce = new CantExplosionesPorColor(cant);
		n.getObjetivos().put(ce, false);
	}
	
	public List<Nivel> getNiveles() {
		return niveles;
	}

	public void setNiveles(ArrayList<Nivel> niveles) {
		this.niveles = niveles;
	}
}
